package org.jsola.hr.service;

import org.jsola.core.Page;
import org.jsola.core.service.IService;
import org.jsola.hr.dao.IMemoEmpDAO;
import org.jsola.hr.dto.MemoEmpAddDTO;
import org.jsola.hr.dto.MemoEmpUpdateDTO;
import org.jsola.hr.entity.MemoEmpDO;
import org.jsola.hr.query.MemoEmpQuery;
import org.jsola.hr.vo.MemoEmpListVO;
import org.jsola.hr.vo.MemoEmpVO;
import org.jsola.user.core.TokenUser;

import java.util.List;


/**
 * 备忘录相关员工
 *
 * @author zhr
 */
public interface IMemoEmpService extends IService<IMemoEmpDAO, MemoEmpDO> {

    /**
     * 新增备忘录相关员工
     * @param memoEmpAddDTO 新增备忘录相关员工DTO
     * @param tokenUser 当前用户
     * @return 备忘录相关员工详情信息
     */
    MemoEmpVO save(MemoEmpAddDTO memoEmpAddDTO, TokenUser tokenUser);

    /**
     * 修改备忘录相关员工
     * @param memoEmpUpdateDTO 修改备忘录相关员工DTO
     * @param tokenUser 当前用户
     * @return 更新数量
     */
    int update(MemoEmpUpdateDTO memoEmpUpdateDTO, TokenUser tokenUser);


    /**
     * 批量删除备忘录相关员工，物理删除，更新is_valid字段，从回收站删除
     * @param tokenUser 当前用户
     * @param memoEmpIds 备忘录相关员工id
     * @return 删除数量
     */
    int deleteByIds(TokenUser tokenUser, String...memoEmpIds);

    /**
     * 根据备忘录相关员工id查找
     * @param memoEmpId 备忘录相关员工id
     * @param siteId 所属站点id
     * @return 备忘录相关员工详情信息
     */
    MemoEmpVO selectById(String memoEmpId, String siteId);

    /**
     * 查询备忘录相关员工
     * @param memoEmpQuery 查询条件
     * @param siteId 所属站点id
     * @return 备忘录相关员工列表信息
     */
    List<MemoEmpListVO> select(MemoEmpQuery memoEmpQuery, String siteId);

    /**
    * 查询备忘录相关员工记录数
    * @param memoEmpQuery 查询条件
    * @param siteId 所属站点id
    * @return 备忘录相关员工记录数
    */
    int selectCount(MemoEmpQuery memoEmpQuery, String siteId);

    /**
     * 分页查询备忘录相关员工
     * @param memoEmpQuery 查询条件
     * @param siteId 所属站点id
     * @return 备忘录相关员工列表信息
     */
    Page<MemoEmpListVO> selectPage(MemoEmpQuery memoEmpQuery, String siteId);


    /**
     * 根据备忘录相关员工id查找
     * @param memoEmpId 备忘录相关员工id
     * @param siteId 所属站点id
     * @return 备忘录相关员工
     */
    MemoEmpDO selectDOById(String memoEmpId, String siteId);

    /**
     * 查询备忘录相关员工
     * @param memoEmpQuery 查询条件
     * @param siteId 所属站点id
     * @return 备忘录相关员工列表
     */
    List<MemoEmpDO> selectDO(MemoEmpQuery memoEmpQuery, String siteId);
}


